﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

	// 设计一个小程序来判断当前机器的字节序。
//思路：利用char*只访问第一个字节来判断差异
//只能输入1，返回1是小端，0是大端
//int check(int a) { return *(char*)&a; }
//
//int main()
//{
//	if (check(1)) printf("small\n"); // 01 00 00 00
//	else printf("big\n"); //00 00 00 01    
//	return 0;
//}

	//猜名次
//思路：1.先用5层循环把所有情况列一遍
//2.说对了一半意味着一个为真一个为假，1+0=1
//int main()
//{
//	for (int a = 1; a <= 5; a++)
//	{
//		for (int b = 1; b <= 5; b++)
//		{
//			for (int c = 1; c <= 5; c++)
//			{
//				for (int d = 1; d <= 5; d++)
//				{
//					for (int e = 1; e <= 5; e++)
//					{
//						if ((b == 2) + (a == 3) == 1
//							&& (b == 2) + (e == 4) == 1
//							&& (c == 1) + (d == 2) == 1
//							&& (c == 5) + (d == 3) == 1
//							&& (e == 4) + (a == 1) == 1
//							&& a*b*c*d*e == 120)
//						{
//							printf("a:%d b:%d c:%d d:%d e:%d\n", a, b, c, d, e);
//						}
//					}
//				}
//			}
//		}
//	}
//
//	return 0;
//}

	//猜凶手
//int main()
//{
//	for (int a = 0; a < 2; a++)
//	{
//		for (int b = 0; b < 2; b++)
//		{
//			for (int c = 0; c < 2; c++)
//			{
//				for (int d = 0; d < 2; d++)
//				{
//					if ((a == 0) + (c == 1) + (d == 1) + (d == 0) == 3 && a+b+c+d == 1)
//					{
//						printf("a:%d b:%d c:%d d:%d\n", a, b, c, d);
//					}
//				}
//			}
//		}
//	}
//
//	return 0;
//}
//方法2
//int main()
//{
//	//因为凶手只有一个，所以就一次假设一个凶手进行遍历
//	for (char killer = 'a'; killer <= 'd'; killer++)
//	{
//		if ((killer!='a') + (killer=='c') + (killer=='d') + (killer!='d') == 3)
//		{
//			printf("%c\n", killer);
//			break;
//		}
//	}
//}

	//杨辉三角
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int arr[100][101] = {0};
//	arr[0][1] = 1;
//	for (int i = 1; i < n; i++)
//	{
//		for (int j = 1; j <= i+1; j++)
//		{
//			arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
//		}
//	}
//	
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 1; j <= i+1; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}
//方法2
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int arr[10][10] = { 0 };
//	//遍历赋值
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j <= i; j++)
//		{
//			//第一列和对角线都是1
//			if (j == 0 || i == j) arr[i][j] = 1;
//			else arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
//		}
//	}
//	//遍历输出
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j <= i; j++) printf("%d ", arr[i][j]);
//		printf("\n");
//	}
//	return 0;
//}